import { fa } from "element-plus/es/locale/index.mjs";
import { defineStore } from "pinia";

/**
 * 使用pinia定义一个名为`navtags`的store。
 *
 * 该store用于管理导航标签的状态，包括添加和删除导航标签。
 */
export const useNavtagsStore = defineStore("navtags", {
  /**
   * 状态初始化函数，用于定义store的初始状态。
   *
   * @returns {Object} 返回一个包含`navtags`属性的对象，`navtags`是一个空数组，用于存储导航标签。
   */
  state: () => ({
    navtags: [
      {
        path: "/home",
        meta: {
          title: "首页",
          icon: "xxx",
        },
      },
    ],
  }),
  /**
   * 持久化配置，用于配置store的持久化存储。
   */
  persist: {
    enabled: false,
  },
  /**
   * 定义store的actions，用于处理变化。
   *
   * 包含`addTag`和`removeTag`两个操作，分别用于添加和删除导航标签。
   */
  actions: {
    /**
     * 添加导航标签。
     *
     * 根据`tag`对象中的`name`属性检查导航标签数组中是否存在相同的标签，
     * 若不存在则将标签添加到数组中。
     *
     * @param {Object} tag 待添加的导航标签，应为一个包含`name`属性的对象。
     */
    addTag(tag) {
      if (tag.path == "/home") return;
      const exists = this.navtags.some((t) => t.name === tag.name);
      if (!exists) {
        this.navtags.push(tag);
      }
    },
    /**
     * 删除导航标签。
     *
     * 根据`tag`对象中的`name`属性从导航标签数组中移除对应的标签。
     *
     * @param {Object} tag 待删除的导航标签，应为一个包含`name`属性的对象。
     */
    removeTag(tag) {
      this.navtags = this.navtags.filter((t) => t.name !== tag.name);
    },
  },
});
